#!/bin/bash

# 设置IP
function kystl_kylinrepo_set_IP()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 设置麒麟软件官方yum源的IP地址 $NOCOLOR"
    hosts="$(grep -E "update.cs2c.com.cn" /etc/hosts)"
    if [ -n "$hosts" ];then
        printf "%s\n%s\n" "$WARNCOLOR [ 警  告 ] /etc/hosts中已配置: " " $hosts $NOCOLOR" 
        read -r -p "$QUECOLOR 是否要删除已存在的配置并重新配置 (Yes/No) ? $NOCOLOR" VERIFY
        if [ "$VERIFY" == yes ] || [ "$VERIFY" == Y  ] || [ "$VERIFY" == Yes ] || [ "$VERIFY" == y ];then
            sed -i "/update.cs2c.com.cn/d" /etc/hosts
            printf '%s\n' "$SUCCOLOR [ 成  功 ] 已删除已存在的 update.cs2c.com.cn 配置 $NOCOLOR"
            while :;do
                read  -r -p "$INFCOLOR 请输入订阅的麒麟软件官方yum源的IP地址(退出请输入q): $NOCOLOR" kylin_standard_yum_ip
                if [ -z "$kylin_standard_yum_ip" ];then
                    printf '%s\n' "$ERRCOLOR [ 错  误 ] 输入的IP为空,请重新输入IP地址 $NOCOLOR"
                elif [ "$kylin_standard_yum_ip" == q ];then
                    exit 0
                else
                    sed -i "1i $kylin_standard_yum_ip update.cs2c.com.cn" /etc/hosts
                    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已在/etc/hosts文件中加入\"$kylin_standard_yum_ip update.cs2c.com.cn \" $NOCOLOR"
                    break
                fi
            done
        elif [ "$VERIFY" == no ] || [ "$VERIFY" == N ] || [ "$VERIFY" == No ] || [ "$VERIFY" == n ];then
            printf '%s\n' "$INFCOLOR [ 消  息 ] 未进行任何操作 $NOCOLOR"
        elif [ "$VERIFY" == q ];then
            exit 0
        else
            printf '%s\n' "$ERRCOLOR [ 错  误 ] 请输入 yes 或者 no $NOCOLOR"
        fi
    else
        while :;do
            read  -r -p "$INFCOLOR 请输入订阅的麒麟软件官方yum源的IP地址(退出请输入q): $NOCOLOR" kylin_standard_yum_ip
            if [ -z "$kylin_standard_yum_ip" ];then
                printf '%s\n' "$ERRCOLOR [ 错  误 ] 输入的IP为空,请重新输入IP地址 $NOCOLOR"
            elif [ "$kylin_standard_yum_ip" == q ];then
                exit 0
            else
                sed -i "1i $kylin_standard_yum_ip update.cs2c.com.cn" /etc/hosts
                printf '%s\n' "$SUCCOLOR [ 成  功 ] 已在/etc/hosts文件中加入\"$kylin_standard_yum_ip update.cs2c.com.cn \" $NOCOLOR"
                break
            fi
        done
    fi
    # 检查IP是否可以使用
    printf '%s\n' "$INFCOLOR [ 消  息 ] 检查 当前配置 IP 是否可以使用 $NOCOLOR"
    if [ ! -e /etc/yum.repos.d/kylin-kystl.repo ];then
        kystl_kylinrepo_backup
        (( STATS-- ))
        kystl_kylinrepo_add_V10SP2x86 &> /dev/null
    fi
    if (yum clean all && yum makecache) &>/dev/null ;then
        printf '%s\n\n' "$SUCCOLOR [ 成  功 ] 已配置麒麟软件官方 YUM 源 IP 地址并确认可以使用 $NOCOLOR"
    else
        printf '%s\n' "$ERRCOLOR [ 错  误 ] 该IP无法连通,请确认后重新设置 $NOCOLOR"
        exit 1
    fi
    sleep 1
    (( STATS++ ))
}


# 备份原有的repo文件
function kystl_kylinrepo_backup()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 备份原有的repo文件 $NOCOLOR"
    [ -d /etc/yum.repos.d/bak ] || mkdir -p /etc/yum.repos.d/bak
    find /etc/yum.repos.d/ -maxdepth 1 -name "kylin*.repo" -exec mv {} /etc/yum.repos.d/bak/ \;
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已备份原有repo的文件 $NOCOLOR"
    sleep 1
    (( STATS++ ))
}

# 添加V10SP1版本x86架构yum源
function kystl_kylinrepo_add_V10SP1x86()
{
    cat >> /etc/yum.repos.d/kylin-kystl.repo <<EOF

[ks10.1-adv-os-x86]
name = Kylin Linux Advanced Server 10.1 - Os-x86
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/base/x86_64/
gpgcheck = 0
enabled = 1

[ks10.1-adv-updates-x86]
name = Kylin Linux Advanced Server 10.1 - Updates-x86
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/x86_64/
gpgcheck = 0
enabled = 1
EOF
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已添加V10SP1版本x86架构yum源 $NOCOLOR"
}

# 添加V10SP1版本aarch64架构yum源
function kystl_kylinrepo_add_V10SP1aarch64()
{
    cat >>/etc/yum.repos.d/kylin-kystl.repo <<EOF

[ks10.1-adv-os-aarch64]
name = Kylin Linux Advanced Server 10.1 - Os-aarch64
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/base/aarch64/
gpgcheck = 0
enabled = 1

[ks10.1-adv-updates-aarch64]
name = Kylin Linux Advanced Server 10.1 - Updates-aarch64
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP1.1/os/adv/lic/updates/aarch64/
gpgcheck = 0
enabled = 1
EOF
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已添加V10SP1版本aarch64架构yum源 $NOCOLOR"
}

# 添加V10SP2版本x86架构yum源
function kystl_kylinrepo_add_V10SP2x86()
{
    cat >>/etc/yum.repos.d/kylin-kystl.repo <<EOF

[ks10.2-adv-os-x86]
name = Kylin Linux Advanced Server 10.2 - Os-x86
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/
gpgcheck = 0
enabled = 1

[ks10.2-adv-updates-x86]
name = Kylin Linux Advanced Server 10.2 - Updates-x86
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/
gpgcheck = 0
enabled = 1 
EOF
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已添加V10SP2版本x86架构yum源 $NOCOLOR"
}

# 添加V10SP2版本aarch64架构yum源
function kystl_kylinrepo_add_V10SP2aarch64()
{
    cat >>/etc/yum.repos.d/kylin-kystl.repo <<EOF

[ks10.2-adv-os-aarch64]
name = Kylin Linux Advanced Server 10.2 - Os-aarch64
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/aarch64/
gpgcheck = 0
enabled = 1

[ks10.2-adv-updates-aarch64]
name = Kylin Linux Advanced Server 10.2 - Updates-aarch64
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/
gpgcheck = 0
enabled = 1
EOF
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已添加V10SP2版本aarch64架构yum源 $NOCOLOR"
}

# 新建kylin.repo
function kystl_kylinrepo_create()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 创建repo文件 $NOCOLOR"
    case $1 in
        V10SP1)
            case $2 in
                x86)
                    kystl_kylinrepo_add_V10SP1x86
                    ;;
                aarch64)
                    kystl_kylinrepo_add_V10SP1aarch64
                    ;;
                all)
                    kystl_kylinrepo_add_V10SP1aarch64
                    kystl_kylinrepo_add_V10SP1x86
                    ;;
            esac
            ;;
        V10SP2)
            case $2 in
                x86)
                    kystl_kylinrepo_add_V10SP2x86
                    ;;
                aarch64)
                    kystl_kylinrepo_add_V10SP2aarch64
                    ;;
                all)
                    kystl_kylinrepo_add_V10SP2aarch64
                    kystl_kylinrepo_add_V10SP2x86
                    ;;
            esac
            ;;
        all)
            case $2 in
                x86)
                    kystl_kylinrepo_add_V10SP1x86
                    kystl_kylinrepo_add_V10SP2x86
                    ;;
                aarch64)
                    kystl_kylinrepo_add_V10SP1aarch64
                    kystl_kylinrepo_add_V10SP2aarch64
                    ;;
                all)
                    kystl_kylinrepo_add_V10SP1aarch64
                    kystl_kylinrepo_add_V10SP1x86
                    kystl_kylinrepo_add_V10SP2aarch64
                    kystl_kylinrepo_add_V10SP2x86
                    ;;
            esac
            ;;
    esac
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已创建repo文件 $NOCOLOR"
    sleep 1
    (( STATS++ ))
}

# 确认reposync程序是否可用
function kystl_kylinrepo_reposync_check()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 确认reposync程序是否可用 $NOCOLOR"
    yum install wget createrepo -y &>/dev/null
    printf '%s' "  reposysnc: "
    if reposync --version;then
        printf '\n%s\n' "$SUCCOLOR [ 成  功 ] 已确认reposync程序可使用 $NOCOLOR"
    else
        printf '%s\n' "$ERRCOLOR [ 错  误 ] reposync程序不可用 $NOCOLOR"
    fi
    sleep 1
    (( STATS++ ))
}

# 创建本地镜像目录
function kystl_reposync_mkdir_mirror()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 创建本地镜像目录 $NOCOLOR"
    [ -d /data/mirror ] || mkdir -p /data/mirror
    [ -d /data/mirror/script ] || mkdir /data/mirror/script
    [ -d /data/mirror/log ] || mkdir /data/mirror/log
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已创建本地镜像目录 $NOCOLOR"
    sleep 1
    (( STATS++ ))
}

# 开始同步镜像
function kystl_reposync_run()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 开始同步镜像 $NOCOLOR"
    reposync -p /data/mirror
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已完成镜像同步 $NOCOLOR"
    sleep 1
    (( STATS++ ))
}

# 更新镜像
function kystl_reposync_update()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 开始更新镜像 $NOCOLOR"
    reposync -np /data/mirror
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已完成镜像更新 $NOCOLOR"
    sleep 1
    (( STATS++ ))
}

# 创建 V10SP1 版本 x86 YUM 源数据
function kystl_kylinrepo_createrepo_V10SP1x86()
{
    if [ ! -d /data/mirror/ks10.1-adv-os-x86/ ] || [ ! -d /data/mirror/ks10.1-adv-os-x86/  ];then
        printf '%s\n' "$ERRCOLOR [ 错  误 ] 创建 V10SP1 版本 x86 架构 YUM 源数据失败 $NOCOLOR"
        printf '%s\n' "$ERRCOLOR [ 错  误 ] 请确认 /data/mirror/ks10.1-adv-os-x86/ 是否存在  $NOCOLOR"
        printf '%s\n' "$ERRCOLOR [ 错  误 ] 请确认 /data/mirror/ks10.1-adv-os-x86/ 是否存在  $NOCOLOR"

        return 1
    else 
        createrepo -po /data/mirror/ks10.1-adv-os-x86/ /data/mirror/ks10.1-adv-os-x86/
        createrepo -po /data/mirror/ks10.1-adv-updates-x86/ /data/mirror/ks10.1-adv-updates-x86/
        printf '%s\n' "$SUCCOLOR [ 成  功 ] 已创建 V10SP1 版本 x86 架构 YUM 源数据 $NOCOLOR"
    fi
}

# 创建 V10SP1 版本 aarch64 YUM 源数据
function kystl_kylinrepo_createrepo_V10SP1aarch64()
{
    createrepo -po /data/mirror/ks10.1-adv-os-aarch64/ /data/mirror/ks10.1-adv-os-aarch64/
    createrepo -po /data/mirror/ks10.1-adv-updates-aarch64/ /data/mirror/ks10.1-adv-updates-aarch64/
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已创建 V10SP1 版本 aarch64 架构 YUM 源数据 $NOCOLOR"
}

# 创建 V10SP2 版本 x86 YUM 源数据
function kystl_kylinrepo_createrepo_V10SP2x86()
{
    createrepo -po /data/mirror/ks10.2-adv-os-x86/ /data/mirror/ks10.2-adv-os-x86/
    createrepo -po /data/mirror/ks10.2-adv-updates-x86/ /data/mirror/ks10.2-adv-updates-x86/
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已创建 V10SP2 版本 x86 架构 YUM 源数据 $NOCOLOR"
}

# 创建 V10SP2 版本 aarch64 YUM 源数据
function kystl_kylinrepo_createrepo_V10SP2aarch64()
{
    createrepo -po /data/mirror/ks10.2-adv-os-aarch64/ /data/mirror/ks10.2-adv-os-aarch64/
    createrepo -po /data/mirror/ks10.2-adv-updates-aarch64/ /data/mirror/ks10.2-adv-updates-aarch64/
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已创建 V10SP2 版本 aarch64 架构 YUM 源数据 $NOCOLOR"
}

# 创建 YUM 源数据
function kystl_kylinrepo_createrepo()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 创建 YUM 源数据 $NOCOLOR"
    case $1 in
        V10SP1)
            case $2 in
                x86)
                    kystl_kylinrepo_createrepo_V10SP1x86
                    ;;
                aarch64)
                    kystl_kylinrepo_createrepo_V10SP1aarch64
                    ;;
                all)
                    kystl_kylinrepo_createrepo_V10SP1x86
                    kystl_kylinrepo_createrepo_V10SP1aarch64
                    ;;
            esac
            ;;
        V10SP2)
            case $2 in
                x86)
                    kystl_kylinrepo_createrepo_V10SP2x86
                    ;;
                aarch64)
                    kystl_kylinrepo_createrepo_V10SP2aarch64
                    ;;
                all)
                    kystl_kylinrepo_createrepo_V10SP2x86
                    kystl_kylinrepo_createrepo_V10SP2aarch64
                    ;;
            esac
            ;;
        all)
            case $2 in
                x86)
                    kystl_kylinrepo_createrepo_V10SP1x86
                    kystl_kylinrepo_createrepo_V10SP2x86
                    ;;
                aarch64)
                    kystl_kylinrepo_createrepo_V10SP1aarch64
                    kystl_kylinrepo_createrepo_V10SP2aarch64
                    ;;
                all)
                    kystl_kylinrepo_createrepo_V10SP1x86
                    kystl_kylinrepo_createrepo_V10SP1aarch64
                    kystl_kylinrepo_createrepo_V10SP2x86
                    kystl_kylinrepo_createrepo_V10SP2aarch64
                    ;;
            esac
            ;;
    esac
    sleep 1
    (( STATS++ ))
}

# 配置nginx 服务器
function kystl_kylinrepo_nginx_set()
{
    printf '\n%s\n\n' "$INFCOLOR [$STATS] 配置 Nginx 服务器 $NOCOLOR"
    #修改nginx配置文件
    [ -f /etc/nginx/nginx.conf ] && mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

    #配置文件内容如下
    cat>/etc/nginx/nginx.conf<<EOF
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile    on;
    keepalive_timeout 65;
    server {
        listen  80;
        server_name localhost;
        root    /data/mirror ;
        location / {
            autoindex on;
            autoindex_exact_size off; 
            autoindex_localtime on; 
            index index.html;
        }
        error_page  500 502 503 504 /50x.html;
        location = /50x.html {
            root    html;
        }
    }
}
EOF
    systemctl start nginx &> /dev/null
    systemctl enable nginx &> /dev/null
    printf '%s\n' "$SUCCOLOR [ 成  功 ] 已配置 Nginx 服务器 $NOCOLOR"
    sleep 1
    (( STATS++ ))
}

function kystl_kylinrepo_createrepo_ui()
{
    clear
    while :;do
        printf '%s\n\n' "$INFCOLOR 欢迎使用银河麒麟内网YUM源部署工具                               $NOCOLOR"
        printf '%s\n'   "$INFCOLOR 请设置 YUM 源数据 系统版本 系统架构                                               $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 1 ] 创建 银河麒麟服务器操作系统 V10 SP1 x86 架构 源数据        $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 2 ] 创建 银河麒麟服务器操作系统 V10 SP1 aarch64 架构 源数据    $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 3 ] 创建 银河麒麟服务器操作系统 V10 SP1 全架构 源数据        $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 4 ] 创建 银河麒麟服务器操作系统 V10 SP2 x86 架构 源数据     $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 5 ] 创建 银河麒麟服务器操作系统 V10 SP2 aarch64 架构 源数据 $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 6 ] 创建 银河麒麟服务器操作系统 V10 SP2 全架构 源数据        $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 7 ] 创建 银河麒麟服务器操作系统 全版本 x86 架构 源数据       $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 8 ] 创建 银河麒麟服务器操作系统 全版本 aarch64 架构 源数据   $NOCOLOR"
        printf '%s\n\n' "$INFCOLOR [ 9 ] 创建 以上 全部版本 全部架构 源数据                     $NOCOLOR"
        read -r -p "$QUECOLOR 请输入需要执行的选项: $NOCOLOR" kystl_kylinrepo_createrepo_ui_opt
        case $kystl_kylinrepo_createrepo_ui_opt in
            1)
            kystl_kylinrepo_createrepo V10SP1 x86
            break
            ;;
            2) 
            kystl_kylinrepo_createrepo V10SP1 aarch64
            break
            ;;
            3)
            kystl_kylinrepo_createrepo V10SP1 all
            break
            ;;
            4) 
            kystl_kylinrepo_createrepo V10SP2 x86
            break
            ;;
            5)
            kystl_kylinrepo_createrepo V10SP2 aarch64
            break
            ;;
            6)
            kystl_kylinrepo_createrepo V10SP2 x86
            break
            ;;
            7)
            kystl_kylinrepo_createrepo V10SP2 aarch64
            break
            ;;
            8)
            kystl_kylinrepo_createrepo V10SP2 all
            break
            ;;
            9)
            kystl_kylinrepo_createrepo all all
            break
            ;;
            q)
            exit 0
            ;;
            *)
            printf '%s\n' "$ERRCOLOR [ 错  误 ] 输入的参数不可执行,请重新输入 $NOCOLOR"
        esac
    done
}

function kystl_kylinrepo_create_ui()
{
    clear
    while :;do
        printf '%s\n\n' "$INFCOLOR 欢迎使用银河麒麟内网YUM源部署工具                               $NOCOLOR"
        printf '%s\n'   "$INFCOLOR 请设置REPO文件                                               $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 1 ] 设置 银河麒麟服务器操作系统 V10 SP1 x86 架构 REPO 文件     $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 2 ] 设置 银河麒麟服务器操作系统 V10 SP1 aarch64 架构 REPO 文件 $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 3 ] 设置 银河麒麟服务器操作系统 V10 SP1 全架构 REPO 文件        $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 4 ] 设置 银河麒麟服务器操作系统 V10 SP2 x86 架构 REPO 文件     $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 5 ] 设置 银河麒麟服务器操作系统 V10 SP2 aarch64 架构 REPO 文件 $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 6 ] 设置 银河麒麟服务器操作系统 V10 SP2 全架构 REPO 文件        $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 7 ] 设置 银河麒麟服务器操作系统 全版本 x86 架构 REPO 文件       $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 8 ] 设置 银河麒麟服务器操作系统 全版本 aarch64 架构 REPO 文件   $NOCOLOR"
        printf '%s\n\n' "$INFCOLOR [ 9 ] 设置 以上 全部版本 全部架构 REPO 文件                     $NOCOLOR"
        read -r -p "$QUECOLOR 请输入需要执行的选项: $NOCOLOR" kystl_kylinrepo_create_ui_opt
        case $kystl_kylinrepo_create_ui_opt in
            1) 
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP1 x86
            break
            ;;
            2) 
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP1 aarch64
            break
            ;;
            3) 
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP1 all
            break
            ;;
            4) 
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP2 x86
            break
            ;;
            5)
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP2 aarch64
            break
            ;;
            6)
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP2 x86
            break
            ;;
            7)
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP2 aarch64
            break
            ;;
            8)
            kystl_kylinrepo_backup
            kystl_kylinrepo_create V10SP2 all
            break
            ;;
            9)
            kystl_kylinrepo_backup
            kystl_kylinrepo_create all all
            break
            ;;
            q)
            exit 0
            ;;
            *)
            printf '%s\n' "$ERRCOLOR [ 错  误 ] 输入的参数不可执行,请重新输入 $NOCOLOR"
        esac
    done
}

function kystl_kylinrepo_other_ui()
{
    while :;do
        printf '%s\n\n' "$INFCOLOR 欢迎使用银河麒麟内网 YUM 源部署工具          $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 1 ] 设置 麒麟软件官方 YUM 源 IP 地址      $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 2 ] 设置 麒麟软件官方 YUM 源 版本 系统架构 $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 3 ] 同步 麒麟软件官方 YUM 源数据          $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 4 ] 更新 麒麟软件官方 YUM 源数据          $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 5 ] 设置 麒麟软件官方 YUM 源数据 Nginx服务器 $NOCOLOR"
        printf '%s\n\n' "$INFCOLOR [ q ] 退出                                 $NOCOLOR"
        read -r -p "$QUECOLOR 请输入需要执行的选项: $NOCOLOR" kystl_kylinrepo_other_opt
        case $kystl_kylinrepo_other_opt in
            1)
            kystl_kylinrepo_set_IP
            break
            ;;
            2)
            kystl_kylinrepo_create_ui
            break
            ;;
            3)
            kystl_kylinrepo_reposync_check
            kystl_reposync_mkdir_mirror
            kystl_reposync_run
            kystl_kylinrepo_createrepo_ui
            break
            ;;
            4)
            kystl_kylinrepo_reposync_check
            kystl_reposync_update
            kystl_kylinrepo_createrepo_ui
            break
            ;;
            5)
            kystl_nginx_install
            kystl_kylinrepo_nginx_set
            break
            ;;
        esac
    done
}

function kystl_kylinrepo_main_ui()
{
    while :;do
        STATS=1
        printf '\n%s\n\n' "$INFCOLOR 欢迎使用银河麒麟内网YUM源部署工具    $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 1 ] 部署 全部版本 全部架构 YUM 源 $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 2 ] 设置 定时更新 YUM 源数据     $NOCOLOR"
        printf '%s\n'   "$INFCOLOR [ 3 ] 其他                       $NOCOLOR"
        printf '%s\n\n' "$INFCOLOR [ q ] 退出                       $NOCOLOR"
        read -r -p "$QUECOLOR 请输入需要执行的选项: $NOCOLOR" kystl_kylinrepo_opt
        case $kystl_kylinrepo_opt in
            1) 
            kystl_kylinrepo_backup
            kystl_kylinrepo_create all all
            kystl_kylinrepo_set_IP
            kystl_kylinrepo_reposync_check
            kystl_reposync_mkdir_mirror
            kystl_nginx_install
            kystl_kylinrepo_nginx_set
            kystl_reposync_run
            kystl_kylinrepo_createrepo all all
            exit 0
            ;;
            2)
            kystl_repoupdate_main
            exit 0
            ;;
            3) 
            kystl_kylinrepo_other_ui
            break
            ;;
            q) 
            exit 0
            ;;
            ?)
            printf '%s\n' "$ERRCOLOR [ 错  误 ] 输入的参数不可执行,请重新输入 $NOCOLOR"
            ;;
        esac
    done
}